/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Relatorios.Cliente;

import camada.bancodedados.daoimplemente.cliente.PessoaFisicaDAOImpl;
import eloma.classe.Cliente;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Icaro
 */
public class ReportCliente {

    private InputStream relJasper;
    private JRBeanCollectionDataSource ds;
    private Hashtable parametros;

    private List<Cliente> listCliente;
    private String nome = "teste";
    private PessoaFisicaDAOImpl daoCliente;

    public ReportCliente() {
        carregarDados();
    }

    public ReportCliente(List<Cliente> listaCliente, String nome) {
        this.listCliente = listaCliente;
        this.nome = nome;
    }

    private void carregarDados() {
        this.listCliente = getCliente();
    }

    private List<Cliente> getCliente() {
        List<Cliente> lista = new ArrayList<Cliente>();
        try {
            lista = daoCliente.buscaTodos();
            return lista;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    private void prepararRelatorio() {

        //Caminho do .jasper do relatorio
        String caminhoRelJasper = "ReportCliente.jasper";

        //Stream com o .jasper
        relJasper = this.getClass().getResourceAsStream(caminhoRelJasper);

        //O datasource
        ds = new JRBeanCollectionDataSource(listCliente);

        //Parametros do relatorios
        parametros = new Hashtable();
        //coloque os valores como String para ficar mais facil de manipular
        //Map parametross = new HashMap();
        parametros.put("nome", nome);
    }

    public void imprimir() {
        prepararRelatorio();

        JasperPrint impressao = null;
        try {
            impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
            int finalPag = impressao.getPages().size() - 1;
            System.out.println("Tamanho da página " + finalPag);
            JasperPrintManager.printPages(impressao, 0, finalPag, true);
        } catch (JRException e) {
        }
    }

    public void exibirRelatorio() {
        prepararRelatorio();

        JasperPrint impressao = null;
        try {
            impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
            JasperViewer viewer = new JasperViewer(impressao, false);
            viewer.setVisible(true);
            viewer.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
        } catch (JRException e) {
            JOptionPane.showMessageDialog(null, e.toString());
        }
    }
}
